package com.sdry.service.hpf;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import com.sdry.model.hpf.ApprovalRecord;
import com.sdry.model.hpf.MaterialComparison;
import com.sdry.model.hpf.PickApply;
import com.sdry.model.jyy.Shedudetail;

/**
 * @ClassName: PickApplyService 
 * @Description:领料申请单Service
 * @Author hpf
 * @Date 2018年10月9日 下午3:05:27 
 * @version 1.0
 */
public interface PickApplyService {

	/**
	 * 条件查询领料申请单总数
	 * @param pickApply 查询条件
	 * @return
	 */
	Integer countPickApply(PickApply pickApply);
	
	/**
	 * 分页查询领料申请单
	 * @param map 查询条件
	 * @return
	 */
	List<PickApply> listPagePickApply(Map<String, Object> map);
	
	/**
	 * 条件查询所有领料申请单
	 * @param pickApply 查询条件
	 * @return
	 */
	List<PickApply> listAllPickApply(PickApply pickApply);
	
	/**
	 * 新增领料申请单
	 * @param pickApply 领料申请单实体
	 * @param stockNum 存货编码组成的数组
	 * @param stockName 存货名称组成的数组
	 * @param stockModel 规格型号组成的数组
	 * @param paunit 主计量单位组成的数组
	 * @param packNorm 包装规格组成的数组
	 * @param batch 批次号组成的数组
	 * @param quantity 数量组成的数组
	 * @return
	 */
	Integer insertPickApply(PickApply pickApply,String[] stockNum,String[] stockName,
			String[] stockModel,String[] paunit,String[] packNorm,String[] batch,String[] quantity);
	
	/**
	 * 修改领料申请单
	 * @param pickApply 领料申请单实体
	 * @param stockNum 存货编码组成的数组
	 * @param stockName 存货名称组成的数组
	 * @param stockModel 规格型号组成的数组
	 * @param quantity 数量组成的数组
	 * @return
	 */
	Integer updatePickApply(PickApply pickApply,String[] stockNum,
			String[] stockName,String[] stockModel,String[] quantity);
	
	/**
	 * 根据ID删除领料申请单
	 * @param pickIDs 领料申请单ID拼接字符串（以，分割）
	 * @return
	 */
	Integer deletePickApply(String pickIDs);
	
	/**
	 * 根据ID审批领料申请单
	 * @param pickIDs 领料申请单ID拼接字符串（以，分割）
	 * @return
	 */
	Integer approvalPickApply(String pickIDs,Long ztree,HttpSession session);
	
	/**
	 * 生成领料单
	 * @param remark1 排产单日期
	 * @return
	 */
	PickApply generatePickApply(String remark1);
	
	/**
	 * 撤销审批
	 * @param approvalRecord
	 * @param session
	 * @return
	 */
	Integer cancelPickApply(ApprovalRecord approvalRecord,HttpSession session);
	
	/**
	 * 根据ID查询领料申请单
	 * @param pickID 领料申请单ID
	 * @return
	 */
	PickApply findPickApplyByID(Long pickID);
	
	Integer approvalPickApply2(ApprovalRecord approvalRecord,HttpSession session);
	
	/**
	 * 查询指定排产单用料偏差率
	 * @param time
	 * @return
	 */
	List<MaterialComparison> listAllMaterialComparison(String time);
	
	/**
	 * 根据日期查询排产单
	 * @param remark1 排产单日期
	 * @return
	 */
	Shedudetail findShedudetailByDate(String remark1);
}
